home *** CD-ROM | disk | FTP | other *** search
/ Mac Easy 2010 May / Mac Life Ubuntu.iso / casper / filesystem.squashfs / usr / src / linux-headers-2.6.28-15 / include / linux / sysv_fs.h < prev    next >
Encoding:
C/C++ Source or Header  |  2008-12-24  |  8.4 KB  |  203 lines

  1. #ifndef _LINUX_SYSV_FS_H
  2. #define _LINUX_SYSV_FS_H
  3.  
  4. #define __packed2__    __attribute__((packed, aligned(2)))
  5.  
  6.  
  7. #ifndef __KERNEL__
  8. typedef u16 __fs16;
  9. typedef u32 __fs16;
  10. #endif
  11.  
  12. /* inode numbers are 16 bit */
  13. typedef __fs16 sysv_ino_t;
  14.  
  15. /* Block numbers are 24 bit, sometimes stored in 32 bit.
  16.    On Coherent FS, they are always stored in PDP-11 manner: the least
  17.    significant 16 bits come last. */
  18. typedef __fs32 sysv_zone_t;
  19.  
  20. /* 0 is non-existent */
  21. #define SYSV_BADBL_INO    1    /* inode of bad blocks file */
  22. #define SYSV_ROOT_INO    2    /* inode of root directory */
  23.  
  24.  
  25. /* Xenix super-block data on disk */
  26. #define XENIX_NICINOD    100    /* number of inode cache entries */
  27. #define XENIX_NICFREE    100    /* number of free block list chunk entries */
  28. struct xenix_super_block {
  29.     __fs16        s_isize; /* index of first data zone */
  30.     __fs32        s_fsize __packed2__; /* total number of zones of this fs */
  31.     /* the start of the free block list: */
  32.     __fs16        s_nfree;    /* number of free blocks in s_free, <= XENIX_NICFREE */
  33.     sysv_zone_t    s_free[XENIX_NICFREE]; /* first free block list chunk */
  34.     /* the cache of free inodes: */
  35.     __fs16        s_ninode; /* number of free inodes in s_inode, <= XENIX_NICINOD */
  36.     sysv_ino_t    s_inode[XENIX_NICINOD]; /* some free inodes */
  37.     /* locks, not used by Linux: */
  38.     char        s_flock;    /* lock during free block list manipulation */
  39.     char        s_ilock;    /* lock during inode cache manipulation */
  40.     char        s_fmod;        /* super-block modified flag */
  41.     char        s_ronly;    /* flag whether fs is mounted read-only */
  42.     __fs32        s_time __packed2__; /* time of last super block update */
  43.     __fs32        s_tfree __packed2__; /* total number of free zones */
  44.     __fs16        s_tinode;    /* total number of free inodes */
  45.     __fs16        s_dinfo[4];    /* device information ?? */
  46.     char        s_fname[6];    /* file system volume name */
  47.     char        s_fpack[6];    /* file system pack name */
  48.     char        s_clean;    /* set to 0x46 when filesystem is properly unmounted */
  49.     char        s_fill[371];
  50.     s32        s_magic;    /* version of file system */
  51.     __fs32        s_type;        /* type of file system: 1 for 512 byte blocks
  52.                                 2 for 1024 byte blocks
  53.                                 3 for 2048 byte blocks */
  54.                                 
  55. };
  56.  
  57. /*
  58.  * SystemV FS comes in two variants:
  59.  * sysv2: System V Release 2 (e.g. Microport), structure elements aligned(2).
  60.  * sysv4: System V Release 4 (e.g. Consensys), structure elements aligned(4).
  61.  */
  62. #define SYSV_NICINOD    100    /* number of inode cache entries */
  63. #define SYSV_NICFREE    50    /* number of free block list chunk entries */
  64.  
  65. /* SystemV4 super-block data on disk */
  66. struct sysv4_super_block {
  67.     __fs16    s_isize;    /* index of first data zone */
  68.     u16    s_pad0;
  69.     __fs32    s_fsize;    /* total number of zones of this fs */
  70.     /* the start of the free block list: */
  71.     __fs16    s_nfree;    /* number of free blocks in s_free, <= SYSV_NICFREE */
  72.     u16    s_pad1;
  73.     sysv_zone_t    s_free[SYSV_NICFREE]; /* first free block list chunk */
  74.     /* the cache of free inodes: */
  75.     __fs16    s_ninode;    /* number of free inodes in s_inode, <= SYSV_NICINOD */
  76.     u16    s_pad2;
  77.     sysv_ino_t     s_inode[SYSV_NICINOD]; /* some free inodes */
  78.     /* locks, not used by Linux: */
  79.     char    s_flock;    /* lock during free block list manipulation */
  80.     char    s_ilock;    /* lock during inode cache manipulation */
  81.     char    s_fmod;        /* super-block modified flag */
  82.     char    s_ronly;    /* flag whether fs is mounted read-only */
  83.     __fs32    s_time;        /* time of last super block update */
  84.     __fs16    s_dinfo[4];    /* device information ?? */
  85.     __fs32    s_tfree;    /* total number of free zones */
  86.     __fs16    s_tinode;    /* total number of free inodes */
  87.     u16    s_pad3;
  88.     char    s_fname[6];    /* file system volume name */
  89.     char    s_fpack[6];    /* file system pack name */
  90.     s32    s_fill[12];
  91.     __fs32    s_state;    /* file system state: 0x7c269d38-s_time means clean */
  92.     s32    s_magic;    /* version of file system */
  93.     __fs32    s_type;        /* type of file system: 1 for 512 byte blocks
  94.                                 2 for 1024 byte blocks */
  95. };
  96.  
  97. /* SystemV2 super-block data on disk */
  98. struct sysv2_super_block {
  99.     __fs16    s_isize;         /* index of first data zone */
  100.     __fs32    s_fsize __packed2__;    /* total number of zones of this fs */
  101.     /* the start of the free block list: */
  102.     __fs16    s_nfree;        /* number of free blocks in s_free, <= SYSV_NICFREE */
  103.     sysv_zone_t s_free[SYSV_NICFREE];    /* first free block list chunk */
  104.     /* the cache of free inodes: */
  105.     __fs16    s_ninode;        /* number of free inodes in s_inode, <= SYSV_NICINOD */
  106.     sysv_ino_t     s_inode[SYSV_NICINOD]; /* some free inodes */
  107.     /* locks, not used by Linux: */
  108.     char    s_flock;        /* lock during free block list manipulation */
  109.     char    s_ilock;        /* lock during inode cache manipulation */
  110.     char    s_fmod;            /* super-block modified flag */
  111.     char    s_ronly;        /* flag whether fs is mounted read-only */
  112.     __fs32    s_time __packed2__;    /* time of last super block update */
  113.     __fs16    s_dinfo[4];        /* device information ?? */
  114.     __fs32    s_tfree __packed2__;    /* total number of free zones */
  115.     __fs16    s_tinode;        /* total number of free inodes */
  116.     char    s_fname[6];        /* file system volume name */
  117.     char    s_fpack[6];        /* file system pack name */
  118.     s32    s_fill[14];
  119.     __fs32    s_state;        /* file system state: 0xcb096f43 means clean */
  120.     s32    s_magic;        /* version of file system */
  121.     __fs32    s_type;            /* type of file system: 1 for 512 byte blocks
  122.                                 2 for 1024 byte blocks */
  123. };
  124.  
  125. /* V7 super-block data on disk */
  126. #define V7_NICINOD     100     /* number of inode cache entries */
  127. #define V7_NICFREE     50      /* number of free block list chunk entries */
  128. struct v7_super_block {
  129.     __fs16 s_isize;        /* index of first data zone */
  130.     __fs32 s_fsize __packed2__; /* total number of zones of this fs */
  131.     /* the start of the free block list: */
  132.     __fs16 s_nfree;        /* number of free blocks in s_free, <= V7_NICFREE */
  133.     sysv_zone_t s_free[V7_NICFREE]; /* first free block list chunk */
  134.     /* the cache of free inodes: */
  135.     __fs16 s_ninode;       /* number of free inodes in s_inode, <= V7_NICINOD */
  136.     sysv_ino_t      s_inode[V7_NICINOD]; /* some free inodes */
  137.     /* locks, not used by Linux or V7: */
  138.     char    s_flock;        /* lock during free block list manipulation */
  139.     char    s_ilock;        /* lock during inode cache manipulation */
  140.     char    s_fmod;         /* super-block modified flag */
  141.     char    s_ronly;        /* flag whether fs is mounted read-only */
  142.     __fs32  s_time __packed2__; /* time of last super block update */
  143.     /* the following fields are not maintained by V7: */
  144.     __fs32  s_tfree __packed2__; /* total number of free zones */
  145.     __fs16  s_tinode;       /* total number of free inodes */
  146.     __fs16  s_m;            /* interleave factor */
  147.     __fs16  s_n;            /* interleave factor */
  148.     char    s_fname[6];     /* file system name */
  149.     char    s_fpack[6];     /* file system pack name */
  150. };
  151.  
  152. /* Coherent super-block data on disk */
  153. #define COH_NICINOD    100    /* number of inode cache entries */
  154. #define COH_NICFREE    64    /* number of free block list chunk entries */
  155. struct coh_super_block {
  156.     __fs16        s_isize;    /* index of first data zone */
  157.     __fs32        s_fsize __packed2__; /* total number of zones of this fs */
  158.     /* the start of the free block list: */
  159.     __fs16 s_nfree;    /* number of free blocks in s_free, <= COH_NICFREE */
  160.     sysv_zone_t    s_free[COH_NICFREE] __packed2__; /* first free block list chunk */
  161.     /* the cache of free inodes: */
  162.     __fs16        s_ninode;    /* number of free inodes in s_inode, <= COH_NICINOD */
  163.     sysv_ino_t    s_inode[COH_NICINOD]; /* some free inodes */
  164.     /* locks, not used by Linux: */
  165.     char        s_flock;    /* lock during free block list manipulation */
  166.     char        s_ilock;    /* lock during inode cache manipulation */
  167.     char        s_fmod;        /* super-block modified flag */
  168.     char        s_ronly;    /* flag whether fs is mounted read-only */
  169.     __fs32        s_time __packed2__; /* time of last super block update */
  170.     __fs32        s_tfree __packed2__; /* total number of free zones */
  171.     __fs16        s_tinode;    /* total number of free inodes */
  172.     __fs16        s_interleave_m;    /* interleave factor */
  173.     __fs16        s_interleave_n;
  174.     char        s_fname[6];    /* file system volume name */
  175.     char        s_fpack[6];    /* file system pack name */
  176.     __fs32        s_unique;    /* zero, not used */
  177. };
  178.  
  179. /* SystemV/Coherent inode data on disk */
  180. struct sysv_inode {
  181.     __fs16 i_mode;
  182.     __fs16 i_nlink;
  183.     __fs16 i_uid;
  184.     __fs16 i_gid;
  185.     __fs32 i_size;
  186.     u8  i_data[3*(10+1+1+1)];
  187.     u8  i_gen;
  188.     __fs32 i_atime;    /* time of last access */
  189.     __fs32 i_mtime;    /* time of last modification */
  190.     __fs32 i_ctime;    /* time of creation */
  191. };
  192.  
  193. /* SystemV/Coherent directory entry on disk */
  194. #define SYSV_NAMELEN    14    /* max size of name in struct sysv_dir_entry */
  195. struct sysv_dir_entry {
  196.     sysv_ino_t inode;
  197.     char name[SYSV_NAMELEN]; /* up to 14 characters, the rest are zeroes */
  198. };
  199.  
  200. #define SYSV_DIRSIZE    sizeof(struct sysv_dir_entry)    /* size of every directory entry */
  201.  
  202. #endif /* _LINUX_SYSV_FS_H */
  203.